//
// Created by zengao on 2022/12/29.
//

#ifndef C100_PRINTVISITOR_H
#define C100_PRINTVISITOR_H

#include "AstNode.h"

namespace C100 {
    class PrintVisitor : public AstVisitor {
    public:
        std::string content;
    public:
        void visitorProgramNode(ProgramNode *node) override;

    private:


        void visitorBinaryNode(BinaryNode *node) override;

        void visitorExprStmtNode(ExprStmtNode *node) override;

        void visitorConstantNode(ConstantNode *node) override;

        void visitorBlockStmtNode(BlockStmtNode *node) override;

        void visitorIfStmtNode(IfStmtNode *node) override;

        void visitorVarExprNode(VarExprNode *node) override;

        void visitorAssignExprNode(AssignExprNode *node) override;
    };
}


#endif //C100_PRINTVISITOR_H
